/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.jjsoft.sistemafacturacion.gco.ngc;



import com.jjsoft.sistemafacturacion.gco.mdl.Articulo;
import com.jjsoft.sistemafacturacion.gco.mdl.Factura;
import com.jjsoft.sistemafacturacion.gco.util.configuraciones;
import com.jjsoft.sistemafacturacion.gco.util.printObject;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintException;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
import javax.print.attribute.AttributeSet;
import javax.print.attribute.HashAttributeSet;
import javax.swing.JOptionPane;

/**
 *
 * @author Johnny
 */
public class CImprimir
{
 /* public void imprimirFactura(Factura fact, List<Articulo> listaArticulos, String impresora)
  {
    DocFlavor docFormat = DocFlavor.SERVICE_FORMATTED.PRINTABLE;

    Doc document = new SimpleDoc(new printObject(fact, listaArticulos), docFormat, null);

    String printerName = impresora;

    PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);
    int impr = 0;
    boolean existe = false;
    for (int i = 0; i < services.length; i++) {
      if (services[i].getName().equals(impresora)) {
        impr = i;
        existe = true;
      }
    }
    if (existe) {
      DocPrintJob printJob = services[impr].createPrintJob();
      try
      {
        printJob.print(document, null);
        System.out.print("imprimiendo en " + services[impr]);
      } catch (PrintException ex) {
        Logger.getLogger(CImprimir.class.getName()).log(Level.SEVERE, null, ex);
        ex.printStackTrace();
      }
    }
    else {
      JOptionPane.showMessageDialog(null, "No esta instalada la impresora seleccionada para la impresion. \n Por favor revise la impresora en las configuraciones");
    }
  }

  */

  

  public String AgregaEspacios(String cadena) {
    for (int i = cadena.length(); i < 40; i++) {
      cadena = cadena + " ";
    }
    if (cadena.length() > 40) {
      cadena = cadena.substring(0, 39);
    }
    return cadena;
  }

  public String AgregaEspaciosDelante(String cadena) {
    for (int i = cadena.length(); i < 40; i++) {
      cadena = " " + cadena;
    }
    if (cadena.length() > 40) {
      cadena = cadena.substring(0, 40);
    }
    return cadena;
  }

  public String AgregaNEspacios(String cadena, int espacios)
  {
    for (int i = 0; i < espacios; i++) {
      cadena = cadena + " ";
    }
    return cadena;
  }

  
  public List<String> getImpresoras() {
    List impresoras = new ArrayList();
    DocFlavor docFormat = DocFlavor.INPUT_STREAM.AUTOSENSE;
    AttributeSet attributeSet = new HashAttributeSet();
    PrintService[] services = PrintServiceLookup.lookupPrintServices(docFormat, attributeSet);
    int impr = 0;
    for (int i = 0; i < services.length; i++) {
      impresoras.add(services[i].getName());
    }

    return impresoras;
  }

  private double redondear(double num)
  {
    num *= 100.0D;
    int numr = (int)num;
    return numr / 100.0D;
  }
}